home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 48 / PC Gamer IT CD 48 2-2.iso / Starsiege / tribesdemo.exe / Disk1 / data1.cab / Tribes_Demo / base / scripts.vol / baseProjData.cs < prev    next >
Encoding:
Text File  |  1999-09-14  |  12.6 KB  |  508 lines

  1. # Damage Types
  2. #
  3. $ImpactDamageType          = -1;
  4. $LandingDamageType      =  0;
  5. $BulletDamageType      =  1;
  6. $EnergyDamageType      =  2;
  7. $PlasmaDamageType      =  3;
  8. $ExplosionDamageType   =  4;
  9. $ShrapnelDamageType    =  5;
  10. $LaserDamageType       =  6;
  11. $MortarDamageType      =  7;
  12. $BlasterDamageType     =  8;
  13. $ElectricityDamageType =  9;
  14. $CrushDamageType       = 10;
  15. $DebrisDamageType      = 11;
  16. $MissileDamageType     = 12;
  17. $MineDamageType        = 13;
  18.  
  19. //--------------------------------------
  20. BulletData ChaingunBullet
  21. {
  22.    bulletShapeName    = "bullet.dts";
  23.    explosionTag       = bulletExp0;
  24.    expRandCycle       = 3;
  25.    mass               = 0.05;
  26.    bulletHoleIndex    = 0;
  27.  
  28.    damageClass        = 0;       // 0 impact, 1, radius
  29.    damageValue        = 0.11;
  30.    damageType         = $BulletDamageType;
  31.  
  32.    aimDeflection      = 0.005;
  33.    muzzleVelocity     = 425.0;
  34.    totalTime          = 1.5;
  35.    inheritedVelocityScale = 1.0;
  36.    isVisible          = False;
  37.  
  38.    tracerPercentage   = 1.0;
  39.    tracerLength       = 30;
  40. };
  41.  
  42. //--------------------------------------
  43. BulletData FusionBolt
  44. {
  45.    bulletShapeName    = "fusionbolt.dts";
  46.    explosionTag       = turretExp;
  47.    mass               = 0.05;
  48.  
  49.    damageClass        = 0;       // 0 impact, 1, radius
  50.    damageValue        = 0.25;
  51.    damageType         = $EnergyDamageType;
  52.  
  53.    muzzleVelocity     = 50.0;
  54.    totalTime          = 6.0;
  55.    liveTime           = 4.0;
  56.    isVisible          = True;
  57.  
  58.    rotationPeriod = 1.5;
  59. };
  60.  
  61. //--------------------------------------
  62. BulletData MiniFusionBolt
  63. {
  64.    bulletShapeName    = "enbolt.dts";
  65.    explosionTag       = energyExp;
  66.  
  67.    damageClass        = 0;
  68.    damageValue        = 0.1;
  69.    damageType         = $EnergyDamageType;
  70.  
  71.    muzzleVelocity     = 80.0;
  72.    totalTime          = 4.0;
  73.    liveTime           = 2.0;
  74.  
  75.    lightRange         = 3.0;
  76.    lightColor         = { 0.25, 0.25, 1.0 };
  77.    inheritedVelocityScale = 0.5;
  78.    isVisible          = True;
  79.  
  80.    rotationPeriod = 1;
  81. };
  82.  
  83. //--------------------------------------
  84. BulletData BlasterBolt
  85. {
  86.    bulletShapeName    = "shotgunbolt.dts";
  87.    explosionTag       = blasterExp;
  88.  
  89.    damageClass        = 0;
  90.    damageValue        = 0.125;
  91.    damageType         = $BlasterDamageType;
  92.  
  93.    muzzleVelocity     = 200.0;
  94.    totalTime          = 2.0;
  95.    liveTime           = 1.125;
  96.  
  97.    lightRange         = 3.0;
  98.    lightColor         = { 1.0, 0.25, 0.25 };
  99.    inheritedVelocityScale = 0.5;
  100.    isVisible          = True;
  101.  
  102.    rotationPeriod = 1;
  103. };
  104.  
  105. //--------------------------------------
  106. BulletData PlasmaBolt
  107. {
  108.    bulletShapeName    = "plasmabolt.dts";
  109.    explosionTag       = plasmaExp;
  110.  
  111.    damageClass        = 1;
  112.    damageValue        = 0.45;
  113.    damageType         = $PlasmaDamageType;
  114.    explosionRadius    = 4.0;
  115.  
  116.    muzzleVelocity     = 55.0;
  117.    totalTime          = 3.0;
  118.    liveTime           = 2.0;
  119.    lightRange         = 3.0;
  120.    lightColor         = { 1, 1, 0 };
  121.    inheritedVelocityScale = 0.3;
  122.    isVisible          = True;
  123.  
  124.    soundId = SoundJetLight;
  125. };
  126.  
  127. //--------------------------------------
  128. RocketData DiscShell
  129. {
  130.    bulletShapeName = "discb.dts";
  131.    explosionTag    = rocketExp;
  132.  
  133.    collisionRadius = 0.0;
  134.    mass            = 2.0;
  135.  
  136.    damageClass      = 1;       // 0 impact, 1, radius
  137.    damageValue      = 0.5;
  138.    damageType       = $ExplosionDamageType;
  139.  
  140.    explosionRadius  = 7.5;
  141.    kickBackStrength = 150.0;
  142.  
  143.    muzzleVelocity   = 65.0;
  144.    terminalVelocity = 80.0;
  145.    acceleration     = 5.0;
  146.  
  147.    totalTime        = 6.5;
  148.    liveTime         = 8.0;
  149.  
  150.    lightRange       = 5.0;
  151.    lightColor       = { 0.4, 0.4, 1.0 };
  152.  
  153.    inheritedVelocityScale = 0.5;
  154.  
  155.    // rocket specific
  156.    trailType   = 1;
  157.    trailLength = 15;
  158.    trailWidth  = 0.3;
  159.  
  160.    soundId = SoundDiscSpin;
  161. };
  162.  
  163. //--------------------------------------
  164. GrenadeData GrenadeShell
  165. {
  166.    bulletShapeName    = "grenade.dts";
  167.    explosionTag       = grenadeExp;
  168.    collideWithOwner   = True;
  169.    ownerGraceMS       = 250;
  170.    collisionRadius    = 0.2;
  171.    mass               = 1.0;
  172.    elasticity         = 0.45;
  173.  
  174.    damageClass        = 1;       // 0 impact, 1, radius
  175.    damageValue        = 0.4;
  176.    damageType         = $ShrapnelDamageType;
  177.  
  178.    explosionRadius    = 15;
  179.    kickBackStrength   = 150.0;
  180.    maxLevelFlightDist = 150;
  181.    totalTime          = 30.0;    // special meaning for grenades...
  182.    liveTime           = 1.0;
  183.    projSpecialTime    = 0.05;
  184.  
  185.    inheritedVelocityScale = 0.5;
  186.  
  187.    smokeName              = "smoke.dts";
  188. };
  189.  
  190. //--------------------------------------
  191. GrenadeData MortarShell
  192. {
  193.    bulletShapeName    = "mortar.dts";
  194.    explosionTag       = mortarExp;
  195.    collideWithOwner   = True;
  196.    ownerGraceMS       = 250;
  197.    collisionRadius    = 0.3;
  198.    mass               = 5.0;
  199.    elasticity         = 0.1;
  200.  
  201.    damageClass        = 1;       // 0 impact, 1, radius
  202.    damageValue        = 1.0;
  203.    damageType         = $MortarDamageType;
  204.  
  205.    explosionRadius    = 20.0;
  206.    kickBackStrength   = 250.0;
  207.    maxLevelFlightDist = 275;
  208.    totalTime          = 30.0;
  209.    liveTime           = 2.0;
  210.    projSpecialTime    = 0.01;
  211.  
  212.    inheritedVelocityScale = 0.5;
  213.    smokeName              = "mortartrail.dts";
  214. };
  215.  
  216. //--------------------------------------
  217. GrenadeData MortarTurretShell
  218. {
  219.    bulletShapeName    = "mortar.dts";
  220.    explosionTag       = mortarExp;
  221.    collideWithOwner   = True;
  222.    ownerGraceMS       = 400;
  223.    collisionRadius    = 1.0;
  224.    mass               = 5.0;
  225.    elasticity         = 0.1;
  226.  
  227.    damageClass        = 1;       // 0 impact, 1, radius
  228.    damageValue        = 1.32;
  229.    damageType         = $MortarDamageType;
  230.  
  231.    explosionRadius    = 30.0;
  232.    kickBackStrength   = 250.0;
  233.    maxLevelFlightDist = 400;
  234.    totalTime          = 1000.0;
  235.    liveTime           = 2.0;
  236.    projSpecialTime    = 0.05;
  237.  
  238.    inheritedVelocityScale = 0.5;
  239.    smokeName              = "mortartrail.dts";
  240. };
  241.  
  242. //--------------------------------------
  243. RocketData FlierRocket
  244. {
  245.    bulletShapeName  = "rocket.dts";
  246.    explosionTag     = rocketExp;
  247.    collisionRadius  = 0.0;
  248.    mass             = 2.0;
  249.  
  250.    damageClass      = 1;       // 0 impact, 1, radius
  251.    damageValue      = 0.5;
  252.    damageType       = $MissileDamageType;
  253.  
  254.    explosionRadius  = 9.5;
  255.    kickBackStrength = 250.0;
  256.    muzzleVelocity   = 65.0;
  257.    terminalVelocity = 80.0;
  258.    acceleration     = 5.0;
  259.    totalTime        = 10.0;
  260.    liveTime         = 11.0;
  261.    lightRange       = 5.0;
  262.    lightColor       = { 1.0, 0.7, 0.5 };
  263.    inheritedVelocityScale = 0.5;
  264.  
  265.    // rocket specific
  266.    trailType   = 2;                // smoke trail
  267.    trailString = "rsmoke.dts";
  268.    smokeDist   = 1.8;
  269.  
  270.    soundId = SoundJetHeavy;
  271. };
  272.  
  273. //--------------------------------------
  274. SeekingMissileData TurretMissile
  275. {
  276.    bulletShapeName = "rocket.dts";
  277.    explosionTag    = rocketExp;
  278.    collisionRadius = 0.0;
  279.    mass            = 2.0;
  280.  
  281.    damageClass      = 1;       // 0 impact, 1, radius
  282.    damageValue      = 0.5;
  283.    damageType       = $MissileDamageType;
  284.    explosionRadius  = 9.5;
  285.    kickBackStrength = 175.0;
  286.  
  287.    muzzleVelocity    = 72.0;
  288.    totalTime         = 10;
  289.    liveTime          = 10;
  290.    seekingTurningRadius    = 9;
  291.    nonSeekingTurningRadius = 75.0;
  292.    proximityDist     = 1.5;
  293.    smokeDist         = 1.75;
  294.  
  295.    lightRange       = 5.0;
  296.    lightColor       = { 0.4, 0.4, 1.0 };
  297.  
  298.    inheritedVelocityScale = 0.5;
  299.  
  300.    soundId = SoundJetHeavy;
  301. };
  302.  
  303. function SeekingMissile::updateTargetPercentage(%target)
  304. {
  305.    return GameBase::virtual(%target, "getHeatFactor");
  306. }
  307.  
  308. //-------------------------------------- 
  309. // These are kinda oddball dat's
  310. // the lasers really don't fit into
  311. // the typical projectile catagories...
  312. //--------------------------------------
  313. LaserData sniperLaser
  314. {
  315.    laserBitmapName   = "laserPulse.bmp";
  316.    hitName           = "laserhit.dts";
  317.  
  318.    damageConversion  = 0.007;
  319.    baseDamageType    = $LaserDamageType;
  320.  
  321.    beamTime          = 0.5;
  322.  
  323.    lightRange        = 2.0;
  324.    lightColor        = { 1.0, 0.25, 0.25 };
  325.  
  326.    detachFromShooter = false;
  327.    hitSoundId        = SoundLaserHit;
  328. };
  329.  
  330. TargetLaserData targetLaser
  331. {
  332.    laserBitmapName   = "paintPulse.bmp";
  333.  
  334.    damageConversion  = 0.0;
  335.    baseDamageType    = 0;
  336.  
  337.    lightRange        = 2.0;
  338.    lightColor        = { 0.25, 1.0, 0.25 };
  339.  
  340.    detachFromShooter = false;
  341. };
  342.  
  343. LightningData lightningCharge
  344. {
  345.    bitmapName       = "lightningNew.bmp";
  346.  
  347.    damageType       = $ElectricityDamageType;
  348.    boltLength       = 40.0;
  349.    coneAngle        = 35.0;
  350.    damagePerSec      = 0.06;
  351.    energyDrainPerSec = 60.0;
  352.    segmentDivisions = 4;
  353.    numSegments      = 5;
  354.    beamWidth        = 0.125;//075;
  355.  
  356.    updateTime   = 120;
  357.    skipPercent  = 0.5;
  358.    displaceBias = 0.15;
  359.  
  360.    lightRange = 3.0;
  361.    lightColor = { 0.25, 0.25, 0.85 };
  362.  
  363.    soundId = SoundELFFire;
  364. };
  365.  
  366. LightningData turretCharge
  367. {
  368.    bitmapName       = "lightningNew.bmp";
  369.  
  370.    damageType       = $ElectricityDamageType;
  371.    boltLength       = 40.0;
  372.    coneAngle        = 35.0;
  373.    damagePerSec      = 0.06;
  374.    energyDrainPerSec = 60.0;
  375.    segmentDivisions = 4;
  376.    numSegments      = 5;
  377.    beamWidth        = 0.125;
  378.  
  379.    updateTime   = 120;
  380.    skipPercent  = 0.5;
  381.    displaceBias = 0.15;
  382.  
  383.    lightRange = 3.0;
  384.    lightColor = { 0.25, 0.25, 0.85 };
  385.  
  386.    soundId = SoundELFFire;
  387. };
  388.  
  389. function Lightning::damageTarget(%target, %timeSlice, %damPerSec, %enDrainPerSec, %pos, %vec, %mom, %shooterId)
  390. {
  391.    %damVal = %timeSlice * %damPerSec;
  392.    %enVal  = %timeSlice * %enDrainPerSec;
  393.  
  394.    GameBase::applyDamage(%target, $ElectricityDamageType, %damVal, %pos, %vec, %mom, %shooterId);
  395.  
  396.    %energy = GameBase::getEnergy(%target);
  397.    %energy = %energy - %enVal;
  398.    if (%energy < 0) {
  399.       %energy = 0;
  400.    }
  401.    GameBase::setEnergy(%target, %energy);
  402. }
  403.  
  404. RepairEffectData RepairBolt
  405. {
  406.    bitmapName       = "repairadd.bmp";
  407.    boltLength       = 5.0;
  408.    segmentDivisions = 4;
  409.    beamWidth        = 0.125;
  410.  
  411.    updateTime   = 450;
  412.    skipPercent  = 0.6;
  413.    displaceBias = 0.15;
  414.  
  415.    lightRange = 3.0;
  416.    lightColor = { 0.85, 0.25, 0.25 };
  417. };
  418.  
  419. function RepairBolt::onAcquire(%this, %player, %target)
  420. {
  421.     %client = Player::getClient(%player);
  422.  
  423.     if (%target == %player) {
  424.        %player.repairTarget = -1;
  425.         if (GameBase::getDamageLevel(%player) != 0) {
  426.             %player.repairRate = 0.05;
  427.             %player.repairTarget = %player;
  428.             Client::sendMessage(%client, 0, "AutoRepair On");
  429.         }
  430.         else {
  431.             Client::sendMessage(%client,0,"Nothing in range");
  432.             Player::trigger(%player, $WeaponSlot, false);
  433.             return;
  434.         }
  435.     }
  436.     else {
  437.       %player.repairTarget = %target;
  438.         %player.repairRate   = 0.1;
  439.         if (getObjectType(%player.repairTarget) == "Player") {
  440.             %rclient = Player::getClient(%player.repairTarget);
  441.             %name = Client::getName(%rclient);
  442.         }
  443.         else { 
  444.             %name = GameBase::getMapName(%target);
  445.             if(%name == "") {
  446.                 %name = (GameBase::getDataName(%player.repairTarget)).description;
  447.             }
  448.         }
  449.         if (GameBase::getDamageLevel(%player.repairTarget) == 0) {
  450.             Client::sendMessage(%client,0,%name @ " is not damaged");
  451.             Player::trigger(%player,$WeaponSlot,false);
  452.             %player.repairTarget = -1;
  453.             return;
  454.         }
  455.         if (getObjectType(%player.repairTarget) == "Player") {
  456.             Client::sendMessage(%rclient,0,"Being repaired by " @ Client::getName(%client));
  457.         }
  458.         Client::sendMessage(%client,0,"Repairing " @ %name);
  459.     }
  460.     %rate = GameBase::getAutoRepairRate(%player.repairTarget) + %player.repairRate;
  461.     GameBase::setAutoRepairRate(%player.repairTarget,%rate);
  462. }
  463.  
  464. function RepairBolt::onRelease(%this, %player)
  465. {
  466.     %object = %player.repairTarget;
  467.     if (%object != -1) {
  468.         %client = Player::getClient(%player);
  469.         if (%object == %player) {
  470.             Client::sendMessage(%client,0,"AutoRepair Off");
  471.         }
  472.         else {
  473.             if (GameBase::getDamageLevel(%object) == 0) {
  474.                 Client::sendMessage(%client,0,"Repair Done");
  475.             }
  476.             else {
  477.                 Client::sendMessage(%client,0,"Repair Stopped");
  478.             }
  479.         }
  480.         %rate = GameBase::getAutoRepairRate(%object) - %player.repairRate;
  481.       if (%rate < 0)
  482.          %rate = 0;
  483.       
  484.         GameBase::setAutoRepairRate(%object,%rate);
  485.     }
  486. }
  487.  
  488. function RepairBolt::checkDone(%this, %player)
  489. {
  490.     if (Player::isTriggered(%player,$WeaponSlot) && 
  491.        Player::getMountedItem(%player,$WeaponSlot) == RepairGun &&
  492.          %player.repairTarget != -1) {
  493.         %object = %player.repairTarget;
  494.         if (%object == %player) {
  495.             if (GameBase::getDamageLevel(%player) == 0) {
  496.                 Player::trigger(%player,$WeaponSlot,false);
  497.                 return;
  498.             }
  499.         }
  500.         else {
  501.             if (GameBase::getDamageLevel(%object) == 0) {
  502.                 Player::trigger(%player,$WeaponSlot,false);
  503.                 return;
  504.             }
  505.         }
  506.     }
  507. }
  508.